package web.suzy.oj.service.file.impl;

import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import web.suzy.oj.common.exception.StatusFailException;
import web.suzy.oj.common.exception.StatusSystemErrorException;
import web.suzy.oj.common.result.ResultBean;
import web.suzy.oj.common.result.ResultStatus;
import web.suzy.oj.manager.file.ProblemFileManager;
import web.suzy.oj.service.file.ProblemFileService;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * YangSuzy 软件工作室
 * 类名: ProblemFileServiceImpl
 * 描述: ---- 待定 -----
 * 功能: ---- 待定 -----
 *
 * @author YangSuzy
 * Date: 2022/12/2 23:47
 */
@Service
public class ProblemFileServiceImpl implements ProblemFileService {
    @Resource
    private ProblemFileManager problemFileManager;

    /**
     * 方法名: importProblem
     * 描述: 通过zip文件导入题目
     *
     * @param file 通过zip文件导入题目
     * @return web.suzy.oj.common.result.ResultBean<java.lang.Void>
     * @date 2022/12/2 23:47
     * @auther YangSuzy
     **/
    @Override
    public ResultBean<Void> importProblem(MultipartFile file) {
        try {
            problemFileManager.importProblem(file);
            return ResultBean.successResponse();
        } catch (StatusFailException e) {
            return ResultBean.errorResponse(e.getMessage());
        } catch (StatusSystemErrorException e) {
            return ResultBean.errorResponse(e.getMessage(), ResultStatus.SYSTEM_ERROR);
        }
    }

    /**
     * 方法名: exportProblem
     * 描述: 导出指定题目和相关测试用例为zip文件
     *
     * @param pidList  题目ID列表
     * @param response 响应
     * @return void
     * @date 2022/12/3 23:46
     * @auther YangSuzy
     **/
    @Override
    public void exportProblem(List<Long> pidList, HttpServletResponse response) {
        problemFileManager.exportProblem(pidList, response);
    }
}
